草庐IT

Android Drawable.createFromStream 分配了太多内存

全部标签

windows - 为什么系统在使用指针 Windows 时分配更多内存?

我使用HeapAlloc分配大量内存,例如400MB,但是当我检查程序的内存使用情况时,它实际上使用了1GB。//configuraciones.h#defineANCHO_MUNDO5000#defineALTO_MUNDO5000//unidades.cppunidad*unidades_memoria=(unidad*)HeapAlloc(heap,//UserHeapNULL,ANCHO_MUNDO*ALTO_MUNDO*sizeofunidad);unidad***unidades=newunidad**[ANCHO_MUNDO];//DefaultHeapfor(inti=

windows - 套接字在同一台 PC 上的通信是否比使用共享内存慢得多?

我有一个向外部应用程序提供视频的WindowsDLL。我的主应用程序创建每个视频帧,我使用由系统页面文件支持的全局共享内存将该帧传递给DLL。视频帧随后由外部应用程序检索并显示。我不拥有外部应用程序,只有它加载以从中获取视频的DLL。我正在考虑切换到基于套接字的方法来在我的主应用程序和DLL之间进行通信,并摆脱共享内存方法。我不喜欢看到“软页面错误”堆积如山,因为每次我向它写入新的视频帧时,我都会重复使共享内存位置无效。我相信软页面错误是无害的,只是所涉及的内存分页的副作用,但没有它我会更舒服。由于视频的传输帧速率约为每秒25帧,因此我有大约1/25秒的时间来传输帧。这些帧绝不会大于6

c++ - 内存使用率上升。释放的内存未被重用

我正在使用debug_new寻找内存泄漏。我正在删除我的对象,而debug_new没有显示我泄露它们的任何痕迹。我读过几个关于内存碎片的线程。但我仍然很困惑。此时我正在测试我的框架,我正在做一个简单的测试。我像这样创建一个新对象:if(sf::Keyboard::isKeyPressed(sf::Keyboard::Space)){artemis::Entity&e=world->createEntity();e.addComponent(newPositionComponent(posX,posY));e.addComponent(newMovementComponent(500,0

两个线程能否同时读取同一个const内存块

内存块在程序开始时被初始化和设置并且没有改变(CONST)。例如:静态常量inta=10;如果它依赖于环境/架构,那么这些设置是否安全:英特尔/AMDWin/Linux32/64位每个核心的线程或一个核心的所有线程。 最佳答案 对于所有架构读取const都是安全的 关于两个线程能否同时读取同一个const内存块,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12337926/

windows - 共享内存段中某个位置的原子比较和交换

我想了解使用InterlockedCompareExchange()是否存在任何隐藏问题更改使用CreateFileMapping(INVALID_HANDLE_VALUE创建的段中的内存)并在多个进程之间共享。换句话说,进程是否可以依赖CAS语义来操作它们共享的内存块?我想他们可以,只是想确认一下。谢谢 最佳答案 CAS操作将与该内存完美配合。文件映射API和虚拟内存系统完成了将内存映射到多个进程的所有艰巨工作。当您接触到内存时,您已经无法将它与任何其他内存区分开来。 关于window

c++ - 如何获取在对 VirtualAlloc 的初始分配调用中保留的区域大小

在VirtualFree的msdn文档中BOOLWINAPIVirtualFree(_In_LPVOIDlpAddress,_In_SIZE_TdwSize,_In_DWORDdwFreeType);dwSize[输入]要释放的内存区域的大小,以字节为单位。如果dwFreeType参数是MEM_RELEASE,这个参数必须是0(零)。该函数释放在对VirtualAlloc的初始分配调用中保留的整个区域。好像系统可以通过地址获取整个区域的大小我的问题是:我该怎么做(通过地址获取整个区域大小)PS:VirtualQueryAPI不能那样做void*p=VirtualAlloc(null,s

c++ - 非分页内存指针

我声明了2个结构:structirp_list{IRP*irp;LIST_ENTRYlh;};和structdev_info{...LIST_ENTRYlh;...};我在DriverWrite函数(IRP_MJ_WRITE)中做:structirp_list*il;structdev_info*di=(structdev_info*)device->DeviceExtension;if(!(il=ExAllocatePool(NonPagedPool,sizeof(*il)))){ret=STATUS_NO_MEMORY;DbgPrint("[uart]UartWritecan'th

c++ - boost::interprocess 共享内存在 32 和 64 位进程之间

我正在尝试让boost::interprocess在32位和64位进程之间共享内存。Thisbugtrackerentry这表明这在我使用的Boost1.49中是可能的。作为测试,我尝试共享一个无符号整数。这是一个带有两个按钮的简单Qt应用程序。#defineSHARED_MEMORY_NAME"Mysharedmemory"#defineSHARED_VAR_NAME"testVar"namespacebip=boost::interprocess;voidon_createMemButton_clicked(){std::cout(SHARED_VAR_NAME)(42);std:

windows - 尽管我的系统中有可用内存,但仍无法访问 R 中的更多内存

这个问题在这里已经有了答案:Increasing(ordecreasing)thememoryavailabletoRprocesses(7个答案)关闭8年前。我正在尝试使用我在stackoverflow(Increasing(ordecreasing)thememoryavailabletoRprocesses)中找到的代码访问更多内存。但是,我收到以下无法解决的错误:memory.limit(10000)Errorinmemory.limit(10000):don'tbesilly!:yourmachinehasa4GbaddresslimitR告诉我我有4gb地址限制(尽管我使用

windows - windbg 内存泄漏调查 - 缺少堆内存

我正在使用windbg调查Windows应用程序中的缓慢内存泄漏!heap-s给出以下输出HeapFlagsReservCommitVirtFreeListUCRVirtLockFast(k)(k)(k)(k)lengthblockscont.heap-------------------------------------------------------------------------------------00000023d62c0000080000021182680116999611819001575927697832b63LFH00000023d483000008008